#!/usr/bin/env bash

#export CXXFLAGS="${CXXFLAGS} --all-warnings"
#export CXXFLAGS="${CXXFLAGS} --extra-warnings"
export CXXFLAGS="${CXXFLAGS} -W"
# ignoring
#export CXXFLAGS="${CXXFLAGS} -Wabi"
#export CXXFLAGS="${CXXFLAGS} -Wabi-tag"
#export CXXFLAGS="${CXXFLAGS} -Wabi="
export CXXFLAGS="${CXXFLAGS} -Waddress"
# +++ ignoring. may be can be fixed?
#export CXXFLAGS="${CXXFLAGS} -Waggregate-return"
export CXXFLAGS="${CXXFLAGS} -Waggressive-loop-optimizations"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Waliasing"
#export CXXFLAGS="${CXXFLAGS} -Walign-commons"
export CXXFLAGS="${CXXFLAGS} -Waligned-new=all"
export CXXFLAGS="${CXXFLAGS} -Wall"
# for future usage?
#export CXXFLAGS="${CXXFLAGS} -Walloc-size-larger-than=N"
export CXXFLAGS="${CXXFLAGS} -Walloc-zero"
export CXXFLAGS="${CXXFLAGS} -Walloca"
#-Walloca already inlcude this
#export CXXFLAGS="${CXXFLAGS} -Walloca-larger-than="
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wampersand"
#export CXXFLAGS="${CXXFLAGS} -Wargument-mismatch"
export CXXFLAGS="${CXXFLAGS} -Warray-bounds"
# +++ need try it
export CXXFLAGS="${CXXFLAGS} -Warray-bounds=2"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Warray-temporaries"
#export CXXFLAGS="${CXXFLAGS} -Wassign-intercept"
export CXXFLAGS="${CXXFLAGS} -Wattribute-alias"
export CXXFLAGS="${CXXFLAGS} -Wattributes"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wbad-function-cast"
export CXXFLAGS="${CXXFLAGS} -Wbool-compare"
export CXXFLAGS="${CXXFLAGS} -Wbool-operation"
export CXXFLAGS="${CXXFLAGS} -Wbuiltin-declaration-mismatch"
export CXXFLAGS="${CXXFLAGS} -Wbuiltin-macro-redefined"
#export CXXFLAGS="${CXXFLAGS} -Wc++-compat"
#export CXXFLAGS="${CXXFLAGS} -Wc++0x-compat"
#export CXXFLAGS="${CXXFLAGS} -Wc++11-compat"
#export CXXFLAGS="${CXXFLAGS} -Wc++14-compat"
#export CXXFLAGS="${CXXFLAGS} -Wc++17-compat"
export CXXFLAGS="${CXXFLAGS} -Wc++1z-compat"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wc-binding-type"
#export CXXFLAGS="${CXXFLAGS} -Wc90-c99-compat"
#export CXXFLAGS="${CXXFLAGS} -Wc99-c11-compat"
export CXXFLAGS="${CXXFLAGS} -Wcast-align"
export CXXFLAGS="${CXXFLAGS} -Wcast-function-type"
# probably fix in future
#export CXXFLAGS="${CXXFLAGS} -Wcast-align=strict"
export CXXFLAGS="${CXXFLAGS} -Wcast-qual"
# probably fix in future
#export CXXFLAGS="${CXXFLAGS} -Wcatch-value=3"
export CXXFLAGS="${CXXFLAGS} -Wchar-subscripts"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wcharacter-truncation"
export CXXFLAGS="${CXXFLAGS} -Wchkp"
export CXXFLAGS="${CXXFLAGS} -Wclass-memaccess"
export CXXFLAGS="${CXXFLAGS} -Wclobbered"
export CXXFLAGS="${CXXFLAGS} -Wcomment"
export CXXFLAGS="${CXXFLAGS} -Wcomments"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wcompare-reals"
export CXXFLAGS="${CXXFLAGS} -Wconditionally-supported"
# +++ need fix in future
#export CXXFLAGS="${CXXFLAGS} -Wconversion"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wconversion-extra"
export CXXFLAGS="${CXXFLAGS} -Wconversion-null"
export CXXFLAGS="${CXXFLAGS} -Wcoverage-mismatch"
export CXXFLAGS="${CXXFLAGS} -Wcpp"
export CXXFLAGS="${CXXFLAGS} -Wctor-dtor-privacy"
export CXXFLAGS="${CXXFLAGS} -Wdangling-else"
export CXXFLAGS="${CXXFLAGS} -Wdate-time"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wdeclaration-after-statement"
export CXXFLAGS="${CXXFLAGS} -Wdelete-incomplete"
export CXXFLAGS="${CXXFLAGS} -Wdelete-non-virtual-dtor"
export CXXFLAGS="${CXXFLAGS} -Wdeprecated"
export CXXFLAGS="${CXXFLAGS} -Wdeprecated-declarations"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wdesignated-init"
# disabled for now
#export CXXFLAGS="${CXXFLAGS} -Wdisabled-optimization"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wdiscarded-array-qualifiers"
#export CXXFLAGS="${CXXFLAGS} -Wdiscarded-qualifiers"
export CXXFLAGS="${CXXFLAGS} -Wdiv-by-zero"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wdo-subscript"
# +++ need fix in future
#export CXXFLAGS="${CXXFLAGS} -Wdouble-promotion"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wduplicate-decl-specifier"
export CXXFLAGS="${CXXFLAGS} -Wduplicated-branches"
export CXXFLAGS="${CXXFLAGS} -Wduplicated-cond"
# +++ too many warnings. may be used some times
#export CXXFLAGS="${CXXFLAGS} -Weffc++"
export CXXFLAGS="${CXXFLAGS} -Wempty-body"
export CXXFLAGS="${CXXFLAGS} -Wendif-labels"
export CXXFLAGS="${CXXFLAGS} -Wenum-compare"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Werror-implicit-function-declaration"
export CXXFLAGS="${CXXFLAGS} -Wexpansion-to-defined"
export CXXFLAGS="${CXXFLAGS} -Wextra"
export CXXFLAGS="${CXXFLAGS} -Wextra-semi"
# +++ need fix in future
#export CXXFLAGS="${CXXFLAGS} -Wfloat-conversion"
# +++ need fix in future
#export CXXFLAGS="${CXXFLAGS} -Wfloat-equal"
export CXXFLAGS="${CXXFLAGS} -Wformat=1"
export CXXFLAGS="${CXXFLAGS} -Wformat-contains-nul"
export CXXFLAGS="${CXXFLAGS} -Wformat-extra-args"
# +++ ignoring. probably need use some times
#export CXXFLAGS="${CXXFLAGS} -Wformat-nonliteral"
export CXXFLAGS="${CXXFLAGS} -Wformat-overflow=2"
export CXXFLAGS="${CXXFLAGS} -Wformat-security"
export CXXFLAGS="${CXXFLAGS} -Wformat-signedness"
export CXXFLAGS="${CXXFLAGS} -Wformat-truncation=2"
export CXXFLAGS="${CXXFLAGS} -Wformat-y2k"
export CXXFLAGS="${CXXFLAGS} -Wformat-zero-length"
#export CXXFLAGS="${CXXFLAGS} -Wformat="
export CXXFLAGS="${CXXFLAGS} -Wframe-address"
#export CXXFLAGS="${CXXFLAGS} -Wframe-larger-than=<number>"
export CXXFLAGS="${CXXFLAGS} -Wfree-nonheap-object"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wfunction-elimination"
export CXXFLAGS="${CXXFLAGS} -Whsa"
export CXXFLAGS="${CXXFLAGS} -Wif-not-aligned"
export CXXFLAGS="${CXXFLAGS} -Wignored-attributes"
export CXXFLAGS="${CXXFLAGS} -Wignored-qualifiers"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wimplicit"
#export CXXFLAGS="${CXXFLAGS} -Wimplicit-fallthrough"
export CXXFLAGS="${CXXFLAGS} -Wimplicit-fallthrough=5"
#export CXXFLAGS="${CXXFLAGS} -Wimplicit-function-declaration"
#export CXXFLAGS="${CXXFLAGS} -Wimplicit-int"
#export CXXFLAGS="${CXXFLAGS} -Wimplicit-interface"
#export CXXFLAGS="${CXXFLAGS} -Wimplicit-procedure"
#export CXXFLAGS="${CXXFLAGS} -Wincompatible-pointer-types"
export CXXFLAGS="${CXXFLAGS} -Winherited-variadic-ctor"
export CXXFLAGS="${CXXFLAGS} -Winit-self"
# ignoting
#export CXXFLAGS="${CXXFLAGS} -Winline"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wint-conversion"
export CXXFLAGS="${CXXFLAGS} -Wint-in-bool-context"
export CXXFLAGS="${CXXFLAGS} -Wint-to-pointer-cast"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Winteger-division"
#export CXXFLAGS="${CXXFLAGS} -Wintrinsic-shadow"
#export CXXFLAGS="${CXXFLAGS} -Wintrinsics-std"
export CXXFLAGS="${CXXFLAGS} -Winvalid-memory-model"
export CXXFLAGS="${CXXFLAGS} -Winvalid-offsetof"
export CXXFLAGS="${CXXFLAGS} -Winvalid-pch"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wjump-misses-init"
#export CXXFLAGS="${CXXFLAGS} -Wlarger-than-"
#export CXXFLAGS="${CXXFLAGS} -Wlarger-than="
#export CXXFLAGS="${CXXFLAGS} -Wline-truncation"
export CXXFLAGS="${CXXFLAGS} -Wliteral-suffix"
export CXXFLAGS="${CXXFLAGS} -Wlogical-not-parentheses"
export CXXFLAGS="${CXXFLAGS} -Wlogical-op"
export CXXFLAGS="${CXXFLAGS} -Wlong-long"
export CXXFLAGS="${CXXFLAGS} -Wlto-type-mismatch"
export CXXFLAGS="${CXXFLAGS} -Wmain"
export CXXFLAGS="${CXXFLAGS} -Wmaybe-uninitialized"
export CXXFLAGS="${CXXFLAGS} -Wmemset-elt-size"
export CXXFLAGS="${CXXFLAGS} -Wmemset-transposed-args"
export CXXFLAGS="${CXXFLAGS} -Wmisleading-indentation"
export CXXFLAGS="${CXXFLAGS} -Wmissing-attributes"
export CXXFLAGS="${CXXFLAGS} -Wmissing-braces"
export CXXFLAGS="${CXXFLAGS} -Wmissing-declarations"
export CXXFLAGS="${CXXFLAGS} -Wmissing-field-initializers"
export CXXFLAGS="${CXXFLAGS} -Wmissing-format-attribute"
export CXXFLAGS="${CXXFLAGS} -Wmissing-include-dirs"
export CXXFLAGS="${CXXFLAGS} -Wmissing-noreturn"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wmissing-parameter-type"
#export CXXFLAGS="${CXXFLAGS} -Wmissing-prototypes"
export CXXFLAGS="${CXXFLAGS} -Wmultichar"
# ignoring
#export CXXFLAGS="${CXXFLAGS} -Wmultiple-inheritance"
export CXXFLAGS="${CXXFLAGS} -Wmultistatement-macros"
# ignoring
#export CXXFLAGS="${CXXFLAGS} -Wnamespaces"
export CXXFLAGS="${CXXFLAGS} -Wnarrowing"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wnested-externs"
export CXXFLAGS="${CXXFLAGS} -Wnoexcept"
export CXXFLAGS="${CXXFLAGS} -Wnoexcept-type"
export CXXFLAGS="${CXXFLAGS} -Wnon-template-friend"
export CXXFLAGS="${CXXFLAGS} -Wnon-virtual-dtor"
export CXXFLAGS="${CXXFLAGS} -Wnonnull"
export CXXFLAGS="${CXXFLAGS} -Wnonnull-compare"
#export CXXFLAGS="${CXXFLAGS} -Wnormalized"
export CXXFLAGS="${CXXFLAGS} -Wnormalized=nfkc"
export CXXFLAGS="${CXXFLAGS} -Wnull-dereference"
export CXXFLAGS="${CXXFLAGS} -Wodr"
export CXXFLAGS="${CXXFLAGS} -Wold-style-cast"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wold-style-declaration"
#export CXXFLAGS="${CXXFLAGS} -Wold-style-definition"
export CXXFLAGS="${CXXFLAGS} -Wopenmp-simd"
export CXXFLAGS="${CXXFLAGS} -Woverflow"
export CXXFLAGS="${CXXFLAGS} -Woverlength-strings"
export CXXFLAGS="${CXXFLAGS} -Woverloaded-virtual"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Woverride-init"
#export CXXFLAGS="${CXXFLAGS} -Woverride-init-side-effects"
export CXXFLAGS="${CXXFLAGS} -Wpacked"
export CXXFLAGS="${CXXFLAGS} -Wpacked-bitfield-compat"
export CXXFLAGS="${CXXFLAGS} -Wpacked-not-aligned"
# +++ may be need fix in future?
#export CXXFLAGS="${CXXFLAGS} -Wpadded"
export CXXFLAGS="${CXXFLAGS} -Wparentheses"
export CXXFLAGS="${CXXFLAGS} -Wpedantic"
export CXXFLAGS="${CXXFLAGS} -Wplacement-new"
#export CXXFLAGS="${CXXFLAGS} -Wplacement-new="
export CXXFLAGS="${CXXFLAGS} -Wpmf-conversions"
export CXXFLAGS="${CXXFLAGS} -Wpointer-arith"
export CXXFLAGS="${CXXFLAGS} -Wpointer-compare"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wpointer-sign"
#export CXXFLAGS="${CXXFLAGS} -Wpointer-to-int-cast"
export CXXFLAGS="${CXXFLAGS} -Wpragmas"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wproperty-assign-default"
#export CXXFLAGS="${CXXFLAGS} -Wprotocol"
export CXXFLAGS="${CXXFLAGS} -Wpsabi"
#export CXXFLAGS="${CXXFLAGS} -Wreal-q-constant"
#export CXXFLAGS="${CXXFLAGS} -Wrealloc-lhs"
#export CXXFLAGS="${CXXFLAGS} -Wrealloc-lhs-all"
export CXXFLAGS="${CXXFLAGS} -Wredundant-decls"
export CXXFLAGS="${CXXFLAGS} -Wregister"
export CXXFLAGS="${CXXFLAGS} -Wreorder"
export CXXFLAGS="${CXXFLAGS} -Wrestrict"
export CXXFLAGS="${CXXFLAGS} -Wreturn-local-addr"
export CXXFLAGS="${CXXFLAGS} -Wreturn-type"
export CXXFLAGS="${CXXFLAGS} -Wscalar-storage-order"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wselector"
export CXXFLAGS="${CXXFLAGS} -Wsequence-point"
export CXXFLAGS="${CXXFLAGS} -Wshadow"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wshadow-ivar"
export CXXFLAGS="${CXXFLAGS} -Wshift-count-negative"
export CXXFLAGS="${CXXFLAGS} -Wshift-count-overflow"
export CXXFLAGS="${CXXFLAGS} -Wshift-negative-value"
export CXXFLAGS="${CXXFLAGS} -Wshift-overflow"
#export CXXFLAGS="${CXXFLAGS} -Wshift-overflow="
export CXXFLAGS="${CXXFLAGS} -Wsign-compare"
# +++ need fix in future
#export CXXFLAGS="${CXXFLAGS} -Wsign-conversion"
export CXXFLAGS="${CXXFLAGS} -Wsign-promo"
export CXXFLAGS="${CXXFLAGS} -Wsized-deallocation"
export CXXFLAGS="${CXXFLAGS} -Wsizeof-array-argument"
export CXXFLAGS="${CXXFLAGS} -Wsizeof-pointer-div"
export CXXFLAGS="${CXXFLAGS} -Wsizeof-pointer-memaccess"
export CXXFLAGS="${CXXFLAGS} -Wstack-protector"
#export CXXFLAGS="${CXXFLAGS} -Wstack-usage="
export CXXFLAGS="${CXXFLAGS} -Wstrict-aliasing"
#export CXXFLAGS="${CXXFLAGS} -Wstrict-aliasing="
export CXXFLAGS="${CXXFLAGS} -Wstrict-null-sentinel"
# used before
#export CXXFLAGS="${CXXFLAGS} -Wstrict-overflow"
#export CXXFLAGS="${CXXFLAGS} -Wstrict-overflow="
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wstrict-prototypes"
export CXXFLAGS="${CXXFLAGS} -Wstringop-overflow=4"
export CXXFLAGS="${CXXFLAGS} -Wstringop-truncation"
#export CXXFLAGS="${CXXFLAGS} -Wstrict-selector-match"
export CXXFLAGS="${CXXFLAGS} -Wsubobject-linkage"
# fix probably in future
#export CXXFLAGS="${CXXFLAGS} -Wsuggest-attribute=cold"
# +++ ignoring
#export CXXFLAGS="${CXXFLAGS} -Wsuggest-attribute=const"
#export CXXFLAGS="${CXXFLAGS} -Wsuggest-attribute=format"
export CXXFLAGS="${CXXFLAGS} -Wsuggest-attribute=malloc"
export CXXFLAGS="${CXXFLAGS} -Wsuggest-attribute=malloc"
export CXXFLAGS="${CXXFLAGS} -Wsuggest-attribute=noreturn"
# +++ ignoring
#export CXXFLAGS="${CXXFLAGS} -Wsuggest-attribute=pure"
#export CXXFLAGS="${CXXFLAGS} -Wsuggest-final-methods"
#export CXXFLAGS="${CXXFLAGS} -Wsuggest-final-types"
export CXXFLAGS="${CXXFLAGS} -Wsuggest-override"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wsurprising"
export CXXFLAGS="${CXXFLAGS} -Wswitch"
export CXXFLAGS="${CXXFLAGS} -Wswitch-bool"
export CXXFLAGS="${CXXFLAGS} -Wswitch-default"
export CXXFLAGS="${CXXFLAGS} -Wswitch-enum"
export CXXFLAGS="${CXXFLAGS} -Wswitch-unreachable"
export CXXFLAGS="${CXXFLAGS} -Wsync-nand"
export CXXFLAGS="${CXXFLAGS} -Wsynth"
# ignoring
#export CXXFLAGS="${CXXFLAGS} -Wsystem-headers"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wtabs"
#export CXXFLAGS="${CXXFLAGS} -Wtarget-lifetime"
export CXXFLAGS="${CXXFLAGS} -Wtautological-compare"
# ignoring
#export CXXFLAGS="${CXXFLAGS} -Wtemplates"
export CXXFLAGS="${CXXFLAGS} -Wterminate"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wtraditional"
#export CXXFLAGS="${CXXFLAGS} -Wtraditional-conversion"
export CXXFLAGS="${CXXFLAGS} -Wtrampolines"
export CXXFLAGS="${CXXFLAGS} -Wtrigraphs"
export CXXFLAGS="${CXXFLAGS} -Wtype-limits"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wundeclared-selector"
export CXXFLAGS="${CXXFLAGS} -Wundef"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wundefined-do-loop"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wunderflow"
export CXXFLAGS="${CXXFLAGS} -Wuninitialized"
export CXXFLAGS="${CXXFLAGS} -Wunknown-pragmas"
export CXXFLAGS="${CXXFLAGS} -Wunreachable-code"
# +++ may be try use in future?
#export CXXFLAGS="${CXXFLAGS} -Wunsafe-loop-optimizations"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wunsuffixed-float-constants"
export CXXFLAGS="${CXXFLAGS} -Wunused"
export CXXFLAGS="${CXXFLAGS} -Wunused-but-set-parameter"
export CXXFLAGS="${CXXFLAGS} -Wunused-but-set-variable"
export CXXFLAGS="${CXXFLAGS} -Wunused-const-variable=1"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wunused-dummy-argument"
export CXXFLAGS="${CXXFLAGS} -Wunused-function"
export CXXFLAGS="${CXXFLAGS} -Wunused-label"
export CXXFLAGS="${CXXFLAGS} -Wunused-local-typedefs"
export CXXFLAGS="${CXXFLAGS} -Wunused-macros"
export CXXFLAGS="${CXXFLAGS} -Wunused-parameter"
export CXXFLAGS="${CXXFLAGS} -Wunused-result"
export CXXFLAGS="${CXXFLAGS} -Wunused-value"
export CXXFLAGS="${CXXFLAGS} -Wunused-variable"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wuse-without-only"
# +++ need from time to time
#export CXXFLAGS="${CXXFLAGS} -Wuseless-cast"
export CXXFLAGS="${CXXFLAGS} -Wvarargs"
export CXXFLAGS="${CXXFLAGS} -Wvariadic-macros"
export CXXFLAGS="${CXXFLAGS} -Wvector-operation-performance"
export CXXFLAGS="${CXXFLAGS} -Wvirtual-inheritance"
export CXXFLAGS="${CXXFLAGS} -Wvirtual-move-assign"
export CXXFLAGS="${CXXFLAGS} -Wvla"
#export CXXFLAGS="${CXXFLAGS} -Wvla-larger-than="
export CXXFLAGS="${CXXFLAGS} -Wvolatile-register-var"
export CXXFLAGS="${CXXFLAGS} -Wwrite-strings"
export CXXFLAGS="${CXXFLAGS} -Wzero-as-null-pointer-constant"
# not for C++
#export CXXFLAGS="${CXXFLAGS} -Wzerotrip"
#export CXXFLAGS="${CXXFLAGS} -frequire-return-statement"
